import nltk
import spacy
unlp = spacy.blank('ur')
from nltk import word_tokenize
nltk.download('punkt')
import random
[nltk_data] Downloading package punkt to /root/nltk_data... [nltk_data] Package punkt is already up-to-date!
Exploring Urdu Text Analysis with NLTK and SpaCy. In this blog post, we embark on an exploration of Urdu text analysis using popular NLP libraries like NLTK (Natural Language Toolkit) and SpaCy, unveiling the intricacies of tokenization, n-gram modeling, and poetry generation.
Getting Started with NLTK and SpaCy Our journey begins with the installation of NLTK and SpaCy, two powerful libraries for NLP tasks in Python. We utilize SpaCy to initialize an Urdu language model (unlp) and NLTK for tokenization of Urdu text. These libraries provide essential tools and functionalities for processing and analyzing Urdu-language content.
Preprocessing and Data Preparation Before diving into analysis, we preprocess the textual data by converting it to lowercase and removing unnecessary characters. We then tokenize the text using NLTK's word tokenizer, breaking it down into individual words for further analysis.
Exploring Token Frequency and N-grams We analyze the frequency of tokens in the Urdu text and explore the distribution of n-grams (sequences of adjacent words) to uncover patterns and structures within the language. By examining token frequencies and n-gram models, we gain insights into the linguistic characteristics and usage patterns of Urdu text.
Building a Poetry Generator Inspired by the poetic tradition of Urdu literature, we embark on the creation of a poetry generator using probabilistic modeling. By constructing a Markov chain model based on bigrams extracted from Urdu poetry, we generate original verses that capture the essence and rhythm of Urdu poetry.
def reading_from_file(filename):
with open(filename,'r') as file:
content=file.readlines()
return content
def make_string(list_of_string):
string_final=''
for i in list_of_string:
string_final+=i
return string_final
def generate_tokens_freq(tokens):
dct={}
for i in tokens:
dct[i]=0
for i in tokens:
dct[i]+=1
return dct
def generate_tokens(d):
tokens = word_tokenize(d)
return tokens
def generate_ngrams(tokens,k):
l=[]
i=0
while(i<len(tokens)):
l.append(tokens[i:i+k])
i=i+1
l=l[:-1]
return l
def generate_ngram_freq(bigram):
dct1={}
for i in bigram:
st=" ".join(i)
dct1[st]=0
for i in bigram:
st=" ".join(i)
dct1[st]+=1
return dct1
def find1(s,dct1):
try:
return dct1[s]
except:
return 0
def print_probability_table(distinct_tokens,dct,dct1):
n=len(distinct_tokens)
l=[[]*n for i in range(n)]
for i in range(n):
denominator = dct[distinct_tokens[i]]
for j in range(n):
numerator = find1(distinct_tokens[i]+" "+distinct_tokens[j],dct1)
l[i].append(float("{:.3f}".format(numerator/denominator)))
return l
def preprocess(d):
d=d.lower()
return d
fiaz=make_string(reading_from_file('faiz.txt'))
ghalib=make_string(reading_from_file('ghalib.txt'))
iqbal=make_string(reading_from_file('iqbal.txt'))
# print(fiaz)
distinct_tokens=generate_tokens(fiaz)
dct=generate_tokens_freq(distinct_tokens)
bigram = generate_ngrams(distinct_tokens,2)
dct1=generate_ngram_freq(bigram)
print(dct)
{'گلوں': 1, 'میں': 39, 'رنگ': 7, 'بھرے': 1, 'باد': 4, 'نوبہار': 1, 'چلے': 11, 'بھی': 16, 'آؤ': 2, 'کہ': 17, 'گلشن': 4, 'کا': 31, 'کاروبار': 1, 'قفس': 1, 'اداس': 2, 'ہے': 27, 'یارو': 2, 'صبا': 5, 'سے': 42, 'کچھ': 9, 'تو': 41, 'کہو': 1, 'کہیں': 1, 'بہر': 2, 'خدا': 4, 'آج': 13, 'ذکر': 1, 'یار': 11, 'کبھی': 7, 'صبح': 4, 'ترے': 5, 'کنج': 1, 'لب': 6, 'ہو': 20, 'آغاز': 2, 'شب': 15, 'سر': 11, 'کاکل': 1, 'مشکبار': 1, 'بڑا': 1, 'درد': 4, 'رشتہ': 2, 'یہ': 6, 'دل': 39, 'غریب': 1, 'سہی': 3, 'تمہارے': 1, 'نام': 3, 'پہ': 20, 'آئیں': 2, 'گے': 2, 'غم': 14, 'گسار': 3, 'جو': 23, 'ہم': 26, 'گزری': 2, 'سو': 4, 'مگر': 3, 'ہجراں': 1, 'ہمارے': 1, 'اشک': 2, 'تری': 5, 'عاقبت': 1, 'سنوار': 1, 'حضور': 2, 'ہوئی': 4, 'دفتر': 1, 'جنوں': 2, 'کی': 31, 'طلب': 6, 'گرہ': 1, 'لے': 3, 'کے': 39, 'گریباں': 2, 'تار': 3, 'مقام': 1, 'فیضؔ': 8, 'کوئی': 23, 'راہ': 4, 'جچا': 1, 'ہی': 7, 'نہیں': 24, 'کوئے': 4, 'نکلے': 2, 'سوئے': 2, 'دار': 2, 'آئے': 14, 'ابر': 3, 'شراب': 1, 'اس': 8, 'بعد': 1, 'عذاب': 1, 'بام': 4, 'مینا': 1, 'ماہتاب': 1, 'اترے': 2, 'دست': 4, 'ساقی': 1, 'آفتاب': 1, 'ہر': 18, 'رگ': 1, 'خوں': 4, 'پھر': 16, 'چراغاں': 1, 'سامنے': 1, 'وہ': 23, 'بے': 9, 'نقاب': 1, 'عمر': 3, 'ورق': 1, 'نظر': 6, 'تیری': 3, 'مہر': 1, 'و': 16, 'وفا': 11, 'باب': 1, 'کر': 6, 'رہا': 2, 'تھا': 20, 'جہاں': 6, 'حساب': 4, 'تم': 4, 'یاد': 4, 'نہ': 37, 'گئی': 7, 'تیرے': 1, 'سرداری': 1, 'یوں': 7, 'روز': 4, 'انقلاب': 1, 'جل': 1, 'اٹھے': 3, 'بزم': 2, 'غیر': 1, 'در': 6, 'جب': 9, 'خانماں': 1, 'خراب': 1, 'طرح': 9, 'اپنی': 2, 'خامشی': 1, 'گونجی': 1, 'گویا': 2, 'سمت': 1, 'جواب': 1, 'تھی': 6, 'بسر': 1, 'منزل': 2, 'پہنچے': 1, 'کامیاب': 1, 'دروازہ': 1, 'کھلا': 3, 'آخر': 9, 'بکھری': 1, 'خوشبوئے': 2, 'قبا': 1, 'پھوٹی': 1, 'پہلو': 1, 'اٹھا': 1, 'اک': 5, 'آیا': 5, 'گیا': 17, 'چاند': 2, 'ماند': 1, 'ستاروں': 1, 'نے': 22, 'کہا': 2, 'کون': 3, 'کرتا': 1, 'عہد': 2, 'لمس': 1, 'جانانہ': 1, 'لیے': 3, 'مستیٔ': 1, 'پیمانہ': 1, 'حمد': 1, 'باری': 1, 'کو': 22, 'دعا': 2, 'گھر': 1, 'ویراں': 1, 'شام': 2, 'کیسے': 2, 'فرقت': 1, 'آباد': 1, 'کیا': 39, 'جس': 7, 'ادا': 3, 'اول': 1, 'اسی': 1, 'انداز': 4, 'چل': 1, 'راز': 5, 'الفت': 2, 'چھپا': 2, 'دیکھ': 13, 'لیا': 12, 'بہت': 4, 'جلا': 2, 'اور': 8, 'دیکھنے': 2, 'باقی': 8, 'آپ': 5, 'لگا': 3, 'مرے': 7, 'ہوئے': 6, 'ان': 6, 'اپنا': 2, 'بنا': 5, 'سب': 8, 'نظریں': 2, 'بچا': 2, 'تکمیل': 2, 'سکی': 2, 'عشق': 7, 'آزما': 2, 'سچ': 1, 'ہمیں': 5, 'شکوے': 2, 'بجا': 1, 'تھے': 25, 'شک': 1, 'ستم': 4, 'جناب': 1, 'دوستانہ': 2, 'ہاں،': 2, 'جفا': 1, 'قاعدے': 1, 'کاربندِ': 1, 'اُصولِ': 1, 'جیسے': 3, 'ہمیشہ': 1, 'مہرباں': 3, 'بُھولے': 1, 'آشنا': 4, 'کیوں': 2, 'دادِ': 1, 'کی،': 1, 'بُرا': 1, 'کشتۂ': 1, 'گر': 4, 'فکرِ': 1, 'زخم': 3, 'خطاوار': 1, 'ہیں': 11, 'محوِ': 1, 'مدح': 2, 'خوبیِ': 1, 'تیغِ': 1, 'چارہ': 3, 'گری': 1, 'گریز': 1, 'ورنہ': 4, 'دکھ': 1, '،': 1, 'لادوا': 1, 'پر': 14, 'تلخیِ': 2, 'مئے': 1, 'ایّام،': 1, 'فیض': 5, 'کلام': 1, 'مائل': 1, 'ذرا': 2, 'حسن': 1, 'مرہون': 1, 'جوش': 1, 'بادۂ': 1, 'ناز': 2, 'منت': 1, 'کش': 2, 'فسون': 1, 'نیاز': 2, 'لرزش': 1, 'پیہم': 2, 'جاں': 3, 'وقف': 1, 'سوز': 1, 'گداز': 1, 'سوزش': 1, 'کسے': 1, 'معلوم': 1, 'جانے': 2, 'کسی': 4, 'میری': 1, 'خاموشیوں': 1, 'لرزاں': 1, 'میرے': 2, 'نالوں': 1, 'گم': 2, 'شدہ': 1, 'آواز': 1, 'چکا': 4, 'اب': 9, 'ہوس': 1, 'کریں': 11, 'فرض': 1, 'ادائے': 1, 'نماز': 1, 'تغافل': 1, 'ہوں': 2, 'انتظار': 1, 'خوف': 3, 'ناکامئ': 1, 'امید': 2, 'توڑ': 1, 'دے': 2, 'طلسم': 1, 'مجاز': 1, 'آتی': 2, 'رہی': 9, 'رات': 8, 'بھر': 8, 'چاندنی': 1, 'دکھاتی': 1, 'گاہ': 2, 'جلتی': 1, 'بجھتی': 1, 'شمع': 1, 'جھلملاتی': 1, 'خوشبو': 1, 'بدلتی': 1, 'پیرہن': 2, 'تصویر': 1, 'گاتی': 1, 'سایۂ': 1, 'شاخ': 1, 'گل': 6, 'تلے': 1, 'قصہ': 1, 'سناتی': 1, 'اسے': 1, 'زنجیر': 1, 'صدا': 3, 'بلاتی': 1, 'ایک': 7, 'بہلتا': 1, 'تمنا': 1, 'ستاتی': 1, 'یک': 1, 'بیک': 1, 'شورش': 1, 'فغاں': 1, 'فصل': 2, 'آئی': 1, 'امتحاں': 1, 'صحن': 2, 'مشتاقاں': 1, 'روش': 2, 'کھنچ': 1, 'کماں': 1, 'لہو': 3, 'کاسۂ': 1, 'داغ': 4, 'ہوا': 5, 'جام': 3, 'ارغواں': 1, 'جنون': 1, 'گشتہ': 1, 'قرض': 2, 'دوستاں': 1, 'کس': 12, 'قاتل': 3, 'سبب': 1, 'مرگ': 2, 'ناگہاں': 1, 'لگے': 4, 'کان': 1, 'یہاں': 3, 'سنبھالے': 1, 'رہو': 1, 'زباں': 1, 'خلش': 1, 'آشیانہ': 1, 'سخن': 1, 'غائبانہ': 1, 'رخ': 3, 'عدو': 2, 'سلوک': 1, 'عاشقانہ': 1, 'خاک': 3, 'لوگ': 2, 'قہر': 1, 'طوفاں': 1, 'سہا': 2, 'خوشا': 1, 'مدعی': 2, 'راندۂ': 1, 'زمانہ': 1, 'حیلہ': 1, 'جفاخو': 1, 'بت': 1, 'بتوں': 2, 'ڈالے': 1, 'وسوسے': 1, 'دلوں': 2, 'پڑی': 2, 'قیامتیں': 1, 'خیال': 1, 'جزا': 2, 'نفس': 1, 'خار': 2, 'گلو': 2, 'ہاتھ': 5, 'نشاط': 1, 'آہ': 1, 'سحر': 1, 'وقار': 1, 'بہار': 4, 'مزاج': 1, 'آبروئے': 1, 'عام': 1, 'ثواب': 1, 'صدق': 1, 'صفا': 1, 'ابھی': 2, 'بادبان': 1, 'تہ': 1, 'رکھو': 1, 'مضطرب': 1, 'راستے': 1, 'منتظر': 2, 'سکوں': 1, 'آ': 15, 'چلا': 1, 'گنواؤ': 1, 'ناوک': 1, 'نیم': 1, 'ریزہ': 2, 'گنوا': 1, 'دیا': 7, 'بچے': 1, 'سنگ': 1, 'سمیٹ': 1, 'لو': 2, 'تن': 2, 'لٹا': 1, 'نوید': 1, 'صف': 1, 'دشمناں': 1, 'خبر': 2, 'کرو': 2, 'رکھتے': 1, 'جان': 2, 'کج': 2, 'جبیں': 1, 'کفن': 1, 'قاتلوں': 1, 'گماں': 1, 'غرور': 1, 'بانکپن': 1, 'پس': 1, 'بھلا': 1, 'ادھر': 2, 'حرف': 3, 'کشتنی': 1, 'لاکھ': 1, 'عذر': 1, 'گفتنی': 1, 'سن': 1, 'اڑا': 1, 'لکھا': 1, 'پڑھ': 1, 'مٹا': 1, 'رکے': 1, 'کوہ': 1, 'گراں': 1, 'گزر': 1, 'گئے': 3, 'رہ': 6, 'قدم': 2, 'تجھے': 2, 'یادگار': 1, 'رقیب': 1, 'ناصح': 1, 'تھیں': 2, 'آشنائیاں': 1, 'جدا': 1, 'میسر': 1, 'قربتیں': 1, 'کتنی': 1, 'بہم': 3, 'جدائیاں': 1, 'پہنچ': 1, 'کتنے': 2, 'معتبر': 1, 'ٹھہرے': 1, 'اگرچہ': 1, 'ہوئیں': 1, 'جگ': 1, 'ہنسائیاں': 1, 'ایسے': 7, 'سادہ': 2, 'مندی': 1, 'خدائیاں': 1, 'خوش': 1, 'لطف': 1, 'کرم': 1, 'رنجیدہ': 1, 'سکھائیں': 1, 'ادائیاں': 1, 'گو': 1, 'ساغر': 1, 'بادہ': 1, 'شہر': 3, 'اتنا': 2, 'زیادہ': 2, 'گلیوں': 1, 'پھرا': 1, 'کرتے': 1, 'دو': 1, 'چار': 1, 'دوانے': 1, 'شخص': 1, 'صد': 1, 'چاک': 1, 'لبادہ': 1, 'پہچانے': 1, 'راہی': 1, 'ناداں': 1, 'ایسا': 1, 'تھک': 1, 'پل': 1, 'آنکھ': 2, 'لگی': 2, 'اٹھیں': 1, 'ارادہ': 1, 'واعظ': 1, 'رسم': 2, 'رند': 1, 'صحبت': 1, 'فرق': 1, 'شہرہ': 1, 'نادانئ': 1, 'پریشانئ': 1, 'محفل': 2, 'زر': 1, 'نمایاں': 1, 'چرچا': 1, 'سامانی': 1, 'چلو': 1, 'نگاراں': 1, 'خرابہ': 1, 'شاید': 1, 'محرم': 1, 'ملے': 1, 'ویرانئ': 1, 'پوچھو': 1, 'تیر': 2, 'فگن': 1, 'سونپا': 1, 'جسے': 1, 'کام': 2, 'نگہبانئ': 1, 'دیکھو': 1, 'کدھر': 1, 'پیام': 1, 'زندانئ': 1, 'آئینۂ': 1, 'عالم': 2, 'وہی': 1, 'حیرانئ': 1, 'گوشۂ': 1, 'اے': 3, 'غماز': 1, 'اعلان': 1, 'والوں': 1, 'بہ': 3, 'ہزار': 1, 'پیکاں': 1, 'پیوست': 1, 'چھیڑی': 1, 'شوق': 1, 'ترازو': 1, 'رقص': 1, 'حرص': 1, 'خطر': 1, 'کف': 1, 'جگر': 1, 'صنم': 2, 'وقت': 1, 'سفر': 1, 'نظارۂ': 1, 'مل': 2, 'سرمۂ': 1, 'چشم': 2, 'خلق': 1, 'بنی': 1, 'چھڑکا': 1, 'طناز': 1, 'وصل': 1, 'ساعت': 1, 'پہنچی': 1, 'حکم': 1, 'حضوری': 1, 'آنکھوں': 2, 'دریچے': 1, 'بند': 1, 'کیے': 1, 'سینے': 2, 'باز': 1, 'پہلے': 2, 'آگے': 1, 'نظارا': 1, 'گزرے': 7, 'روشن': 1, 'جاتی': 1, 'گلی': 1, 'ہمارا': 1, 'اچھے': 1, 'جن': 1, 'اپنے': 1, 'فرصت': 1, 'پوچھیں': 1, 'احوال': 1, 'مارا': 1, 'خزاں': 1, 'ایسی': 1, 'ٹھہری': 1, 'سارے': 2, 'زمانے': 1, 'بھول': 1, 'موسم': 1, 'پھیرے': 1, 'دوبارا': 1, 'یاروں': 1, 'بہتات': 1, 'اغیار': 1, 'بیزار': 1, 'بیٹھے': 1, 'دشمن': 1, 'ساتھ': 2, 'گوارا': 1, 'سجھائی': 1, 'دیوے': 1, 'لیکن': 2, 'اٹھتے': 1, 'سارا': 1, 'سکھلائے': 1, 'گا': 2, 'ہوتا': 7, 'دکھلائیں': 1, 'گنو': 1, 'حسرتیں': 1, 'مقتل': 2, 'بہا': 1, 'جہان': 1, 'تدبیریں': 1, 'تعزیریں': 1, 'پیمان': 1, 'تسلیم': 1, 'رضا': 1, 'گھڑی': 1, 'قیامت': 1, 'رواں': 1, 'نبض': 1, 'دوراں': 1, 'گردشوں': 1, 'آسماں': 1, 'کہتے': 1, 'جانب': 1, 'زیبائی': 1, 'بدلے': 2, 'صورت': 1, 'تنہائی': 1, 'دولت': 1, 'خسرو': 1, 'شیریں': 1, 'دہناں': 1, 'ارزاں': 1, 'شناسائی': 1, 'گرمئی': 1, 'رشک': 1, 'انجمن': 1, 'بدناں': 1, 'تذکرہ': 1, 'چھیڑے': 1, 'آرائی': 1, 'شہ': 1, 'شمشاد': 1, 'قداں': 1, 'سلیقہ': 1, 'رعنائی': 1, 'بار': 3, 'مسیحائے': 1, 'زدگاں': 1, 'وعدہ': 1, 'اقرار': 1, 'مسیحائی': 1, 'دیدہ': 1, 'سنبھالو': 1, 'فراق': 2, 'ساز': 1, 'سامان': 1, 'پہنچا': 1, 'رسوائی': 1, 'موج': 2, 'تھم': 1, 'غمزدوں': 1, 'قرار': 1, 'زلف': 1, 'پیغام': 1, 'دیدار': 1, 'دید': 2, 'وہم': 1, 'سمجھے': 1, 'رو': 2, 'گزار': 1, 'فردا': 1, 'ترسنے': 1, 'رفتہ': 1, 'ترا': 1, 'اعتبار': 1, 'رت': 1, 'بدلنے': 1, 'دیکھنا': 1, 'حال': 1, 'کھلتا': 1, 'چھلکا': 1, 'یا': 3, 'امڈے': 1, 'خون': 1, 'عشاق': 1, 'بھرنے': 1, 'سلگنے': 1, 'جلنے': 1, 'آرزو': 3, 'نکھار': 1, 'سرفروشی': 1, 'دعوت': 1, 'قتل': 1, 'ڈال': 1, 'گردن': 1, 'طوق': 1, 'لاد': 1, 'کاندھے': 1, 'جانیے': 1, 'آس': 1, 'لائے': 1, 'مے': 1, 'کشوں': 1, 'محتسب': 1, 'فگاروں': 1, 'پیار': 1, 'شرح': 1, 'مشکبو': 1, 'غربت': 1, 'کدے': 1, 'گفتگو': 1, 'ٹکرائیں': 1, 'ربا': 1, 'خالی': 1, 'سبو': 1, 'تلاش': 1, 'کب': 1, 'تک': 2, 'سنے': 1, 'گی': 1, 'کہاں': 1, 'سنائیں': 1, 'گلے': 1, 'روبرو': 1, 'دم': 1, 'حدیث': 1, 'ملامت': 1, 'سنائیو': 1, 'رفو': 1, 'آشفتہ': 1, 'محتسبو': 1, 'منہ': 1, 'آئیو': 1, 'بیچ': 1, 'دیں': 2, 'فکر': 1, "''": 2, 'تر': 1, 'دامنی': 1, 'شیخ': 1, 'ہماری': 1, 'جائیو': 1, 'دامن': 1, 'نچوڑ': 1, 'فرشتے': 1, 'وضو': 1, 'ہمتِ': 1, 'التجا': 1, 'ضبط': 1, 'حوصلہ': 1, 'اِک': 1, 'چِھن': 1, 'مجھ': 1, 'دنیا': 1, 'مشقِ': 1, 'کھینچ': 1, 'الم': 1, 'نواز': 1, 'خیر': 1, 'گِلہ': 1, 'ختم': 1, 'عہدِ': 1, 'ہجر': 1, 'وصال': 1, 'زندگی': 1, 'مزہ': 1, 'روس': 2, 'ملک': 2, 'اشعراء': 1, 'رسول': 2, 'ہمزہ': 1, 'توف': 2, 'مارکہ': 1, 'آرا': 1, 'نظم': 2, 'مجھے': 2, 'معجزوں': 1, 'یقیں': 1, 'قضا': 1, 'دہر': 1, 'عزم': 1, 'لحد': 1, 'لوٹ': 1, 'آسکھوں': 1, 'آکے': 1, 'کروں': 1, 'آرہوں': 1, 'رہِ': 1, 'عدم': 1, 'روانہ': 1, 'ترجمہ': 2, 'احمد': 2, 'نسخہ': 2, 'ہائے': 2, 'الشعراء': 1, '“': 2, 'ھمزہ': 1, 'خوبصورت': 1, 'بولنا': 1, 'سیکھا': 1, 'بات': 2, 'سمجھتی': 1, 'شاعر': 1, 'بری': 1, 'اسکی': 1, 'پلے': 1, 'پڑتی': 1}
print("Probability table = \n")
probability_table=print_probability_table(distinct_tokens,dct,dct1)
Probability table =
corpus = fiaz+iqbal+ghalib
corpus = corpus.lower().replace('\n', ' ').strip()
words = corpus.split()
bigrams = [(words[i], words[i+1]) for i in range(len(words)-1)]
model = {}
for w1, w2 in bigrams:
if w1 in model:
model[w1].append(w2)
else:
model[w1] = [w2]
for i in range(0,4):
for i in range(0,4):
poetry = []
start_word = random.choice(list(model.keys()))
poetry.append(start_word)
while len(poetry) < 8:
current_word = poetry[-1]
if current_word in model:
next_word = random.choice(model[current_word])
poetry.append(next_word)
else:
poetry.append(random.choice(list(model.keys())))
print(' '.join(poetry).capitalize()+"\n")
print("\n")
نوردی! کہ میں ہے پندار کا پوچھو تو العصر' کا کیا ضرورت ہو ہے کہ گلشن یارب تیر کا کر عالم کے خواب میں شاہی و تب و نجف کمال کس کی بچوں کو شہہ نشاں ہوگی آہ بے جذب اوجِ طالعِ شوق! مژدۂ قتل کرنے کیلئے یہ چاہیئے مجھ کو مشاطۂ الفت اسد بد خو صحبتِ اہلِ بینش کو‘ اس کا یہ خواری‘ تازہ ڈالی ہے تقاضا کہ کبھی جو ان غاروں میں غالب نماز بے اثر ھے، مخمور النعشِ گردوں‘ ہے یہ حجاب میں لیکن یہی بہم‘ ہمیں کج ادائیاں کیا وہ پری پیکر انس و ادب پر نمک چھڑکا آپ سے تنہا بیٹھنا اُس نے ہاتھ جو کہا‘ تو جیسے پیغام دیدار کی سلطنت میں الجھ کر لذّتِ سنگ دل! تیرا ایاغ شیخ مکتب سے